﻿Public Class frmUsuario
    Dim _titulo As String
    Dim _tipoVentana As String
    Dim _idUsuario As String
    Dim _sePresionoGuardar As Boolean = False
    Dim _componentesHabilitados As Boolean
    Dim utilidades As New Utilidades
    Dim _formPrincipal As frmPrincipal

    Public Sub New(ByVal tipoVentana As Integer, ByRef form As frmPrincipal)
        Me.InitializeComponent()

        If tipoVentana = Constantes.Ventana_Tipo_Apertura_Detalle Then
            _titulo = "Detalle de Usuario"
            _componentesHabilitados = False
        End If
        If tipoVentana = Constantes.Ventana_Tipo_Apertura_Nuevo Then
            _titulo = "Nuevo Usuario"
            _componentesHabilitados = True
        End If
        If tipoVentana = Constantes.Ventana_Tipo_Apertura_Edicion Then
            _titulo = "Modificar Usuario"
            _componentesHabilitados = True
        End If

        _tipoVentana = tipoVentana
        _formPrincipal = form
    End Sub

    Public Property idUsuario()
        Get
            Return _idUsuario
        End Get
        Set(ByVal value)
            _idUsuario = value
        End Set
    End Property

    Private Sub frmUsuario_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Not _tipoVentana = Constantes.Ventana_Tipo_Apertura_Detalle Then
            If _sePresionoGuardar = False Then
                If MessageBox.Show("Si cancela no se guardarán los cambios ¿Está seguro?", "Atención", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then
                    e.Cancel = False
                Else
                    e.Cancel = True
                End If
            End If
        End If
    End Sub

    Private Sub frmUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim myAccesoDatos As New AccesoDatos

        'Seteo el Titulo de la Ventana
        Me.Text = _titulo

        If Not _tipoVentana = Constantes.Ventana_Tipo_Apertura_Nuevo Then
            Me.cargarDatosDeUsuario()
        End If

        'Habilito los componentes segun la Pantalla
        Me.habilitacionComponentes()

        'Determino que botones mostrar por pantalla
        Me.mostrarBotones()
    End Sub

    Private Sub cargarDatosDeUsuario()
        Dim myAccesoDatos As New AccesoDatos
        Dim tablaDB As New Data.DataTable
        Dim myConsulta As String
        myConsulta = "SELECT APELLIDO, NOMBRE, USUARIO_LOGIN, CONTRASENYA_LOGIN, ACTIVO FROM EMPLEADO WHERE ID = " & _idUsuario

        tablaDB = myAccesoDatos.ejecutarConsulta(myConsulta)

        'Llenamos las Cajas de Texto con los Valores Correspondientes
        Me.txtApellido.Text = Convert.ToString(tablaDB.Rows.Item(0).Item(0))
        Me.txtNombre.Text = Convert.ToString(tablaDB.Rows.Item(0).Item(1))
        Me.txtNombreLogin.Text = Convert.ToString(tablaDB.Rows.Item(0).Item(2))
        Me.txtPassLogin.Text = Convert.ToString(tablaDB.Rows.Item(0).Item(3))

        'Ponemos los Checks donde corresponda
        If Convert.ToString(tablaDB.Rows.Item(0).Item(4)) = "S" Then
            Me.chkActivo.Checked = True
        Else
            Me.chkActivo.Checked = False
        End If

    End Sub

    Private Sub habilitacionComponentes()
        lblAsterisco.Enabled = _componentesHabilitados
        lblAsterisco1.Enabled = _componentesHabilitados
        lblAsterisco2.Enabled = _componentesHabilitados
        lblAsterisco3.Enabled = _componentesHabilitados
        lblAsterisco4.Enabled = _componentesHabilitados
        lblDatosRequeridos.Enabled = _componentesHabilitados
        txtApellido.Enabled = _componentesHabilitados
        txtNombre.Enabled = _componentesHabilitados
        txtNombreLogin.Enabled = _componentesHabilitados
        txtPassLogin.Enabled = _componentesHabilitados
        chkActivo.Enabled = _componentesHabilitados
    End Sub

    Private Sub mostrarBotones()
        Me.cmdAceptar.Visible = (Not _componentesHabilitados)
        Me.cmdGuardar.Visible = _componentesHabilitados
        Me.cmdCancelar.Visible = _componentesHabilitados
    End Sub

    Private Sub cmdGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGuardar.Click
        If Me.txtApellido.Text.Trim() = "" Then
            MsgBox("El Apellido es requerido", vbOKOnly + vbCritical, "Atención")
            Me.txtApellido.Focus()
            Exit Sub
        End If
        If Me.txtNombre.Text.Trim() = "" Then
            MsgBox("El Nombre es requerido", vbOKOnly + vbCritical, "Atención")
            Me.txtNombre.Focus()
            Exit Sub
        End If
        If Me.txtNombreLogin.Text.Trim() = "" Then
            MsgBox("El Usuario es requerido", vbOKOnly + vbCritical, "Atención")
            Me.txtNombreLogin.Focus()
            Exit Sub
        End If
        If Me.txtPassLogin.Text.Trim() = "" Then
            MsgBox("La Contraseña es requerida", vbOKOnly + vbCritical, "Atención")
            Me.txtPassLogin.Focus()
            Exit Sub
        End If

        If MessageBox.Show("¿Está seguro que desea guardar los cambios?", "Atención", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.OK Then
            Dim myAccesoDatos As New AccesoDatos

            Dim myConsulta As String
            Dim tabla As Data.DataTable
            myConsulta = "SELECT ID FROM EMPLEADO WHERE UPPER(USUARIO_LOGIN) = UPPER('" & Me.txtNombreLogin.Text.Trim() & "')"

            If Not _idUsuario = "" Then
                myConsulta = myConsulta & " AND ID <> " & _idUsuario
            End If

            tabla = myAccesoDatos.ejecutarConsulta(myConsulta)

            If tabla.Rows.Count = 0 Then

                If _tipoVentana = Constantes.Ventana_Tipo_Apertura_Nuevo Then

                    myConsulta = _
                        "INSERT INTO EMPLEADO(NOMBRE, APELLIDO, USUARIO_LOGIN, CONTRASENYA_LOGIN, ACTIVO) " & _
                        "VALUES ('" & Me.txtNombre.Text.Trim() & "', '" & Me.txtApellido.Text.Trim() & "', '" & _
                        Me.txtNombreLogin.Text.Trim() & "', '" & Me.txtPassLogin.Text.Trim() & "', '"

                    If Me.chkActivo.Checked = True Then
                        myConsulta = myConsulta & "S')"
                    Else
                        myConsulta = myConsulta & "N')"
                    End If

                    myAccesoDatos.ejecutarConsulta(myConsulta)

                End If

                If _tipoVentana = Constantes.Ventana_Tipo_Apertura_Edicion Then
                    myConsulta = "UPDATE EMPLEADO SET " & _
                    "NOMBRE = '" & Me.txtNombre.Text.Trim() & "', " & _
                    "APELLIDO = '" & Me.txtApellido.Text.Trim() & "', " & _
                    "USUARIO_LOGIN = '" & Me.txtNombreLogin.Text.Trim() & "', " & _
                    "CONTRASENYA_LOGIN = '" & Me.txtPassLogin.Text.Trim() & "', "

                    If Me.chkActivo.Checked = True Then
                        myConsulta = myConsulta & "ACTIVO = 'S'"
                    Else
                        myConsulta = myConsulta & "ACTIVO = 'N'"
                    End If

                    myConsulta = myConsulta & "WHERE ID = " & idUsuario

                    myAccesoDatos.ejecutarConsulta(myConsulta)
                End If

                MessageBox.Show("Los datos han sido guardados exitosamente", "Guardar Usuario", MessageBoxButtons.OK, MessageBoxIcon.Information)
                _formPrincipal.frmGestionUsuarios.buscar(_formPrincipal.frmGestionUsuarios.armarWhereConsulta)
                _sePresionoGuardar = True
                Me.Close()
            Else
                MsgBox("Ya existe un Usuario con ese Nombre para Login", vbOKOnly + vbCritical, "Atención")
            End If
        End If
    End Sub

    Private Sub cmdAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAceptar.Click
        _sePresionoGuardar = False
        Me.Close()
    End Sub

    Private Sub cmdCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancelar.Click
        _sePresionoGuardar = False
        Me.Close()
    End Sub
End Class